package com.bluesky.light.product;

import java.util.List;

/**
 * 產品在存取數據庫時所用到的功能
 * 
 * @author
 * 
 */
public class ProductService {

	/**
	 * 管理ProductService 所有方法的對象
	 */
	private static ProductService mgr = null;

	/**
	 * 在數據庫存取產品資料的對象
	 */
	private static ProductDAO dao = new ProductDAO();

	/**
	 * 
	 */
	private ProductService() {
	};

	/**
	 * 要用到ProductService時, 調用此方法創建一個ProductService的實例
	 * 
	 * @return
	 */
	public static ProductService getInstance() {
		if (mgr == null) {
			mgr = new ProductService();
		}
		return mgr;
	}

	/**
	 * 獲取數據庫中儲存的產品資料
	 * 
	 * @param products
	 * @param lazy
	 * @return
	 */
	public int getProducts(List<Product> products, boolean lazy) {
		return dao.getProducts(products, lazy);
	}

	/**
	 * 把產品的資料儲存到數據庫
	 * 
	 * @param p
	 */
	public void add(Product p) {
		dao.add(p);
	}

	/**
	 * 根據產品的識別號查找產品的信息
	 * @param id
	 * @return
	 */
	public Product getProductById(int id) {
		return dao.getProductById(id);
	}

	/**
	 * 根據產品名查找產品的信息
	 * 
	 * @param name
	 * @return
	 */
	public List<Product> getProductsByName(String name) {
		return dao.getProductsByName(name);
	}

	/**
	 * 更新產品的資料
	 * 
	 * @param p
	 */
	public void update(Product p) {
		dao.update(p);
	}

	/**
	 * 根據產品的識別號刪除一個在數據庫中的用戶資料
	 * 
	 * @param id
	 */
	public void delete(int id) {
		dao.delete(id);
	}
}
